package com.jwsoft.manager.core.dao.model;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 户籍信息表
 *
 * @author wangtao
 * @since 2022-12-02
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("edu_household")
@Schema(name = "EduHousehold", title = "户籍信息表", description = "户籍信息表实体类")
public class EduHousehold extends Model<EduHousehold> {

    private static final long serialVersionUID = 1L;

    @Schema(name = "householdId", title = "户籍id")
    @TableId(value = "household_id", type = IdType.ASSIGN_ID)
    private String householdId;

    @Schema(name = "hhid", title = "户号内部id")
    @TableField(value = "hhid")
    private String hhid;

    @Schema(name = "hh", title = "户号")
    @TableField(value = "hh")
    private String hh;

    @Schema(name = "contractor", title = "承办人")
    @TableField(value = "contractor")
    private String contractor;

    @Schema(name = "ryzt", title = "人员状态")
    @TableField(value = "ryzt")
    private String ryzt;

    @Schema(name = "ryid", title = "人员id")
    @TableField(value = "ryid")
    private String ryid;

    @Schema(name = "idcard", title = "公民身份证件编码")
    @TableField(value = "idcard")
    private String idcard;

    @Schema(name = "fullName", title = "姓名")
    @TableField(value = "full_name")
    private String fullName;

    @Schema(name = "beforeName", title = "曾用名")
    @TableField(value = "before_name")
    private String beforeName;

    @Schema(name = "height", title = "身高")
    @TableField(value = "height")
    private BigDecimal height;

    @Schema(name = "birthday", title = "出生日期")
    @TableField(value = "birthday")
    private String birthday;

    @Schema(name = "birthplace", title = "出生地")
    @TableField(value = "birthplace")
    private String birthplace;

    @Schema(name = "sex", title = "性别")
    @TableField(value = "sex")
    private String sex;

    @Schema(name = "country", title = "国家")
    @TableField(value = "country")
    private String country;

    @Schema(name = "nation", title = "民族")
    @TableField(value = "nation")
    private String nation;

    @Schema(name = "nativePlace", title = "籍贯")
    @TableField(value = "native_place")
    private String nativePlace;

    @Schema(name = "addressCity", title = "户口所在地县市")
    @TableField(value = "address_city")
    private String addressCity;

    @Schema(name = "addressCountry", title = "户口所在乡镇街道")
    @TableField(value = "address_country")
    private String addressCountry;

    @Schema(name = "addressVillage", title = "户口所在村社区")
    @TableField(value = "address_village")
    private String addressVillage;

    @Schema(name = "addressVillageDetail", title = "户口所在地街路巷")
    @TableField(value = "address_village_detail")
    private String addressVillageDetail;

    @Schema(name = "mlxz", title = "户口所在地门楼详址:mlxz和mlph只有其中一个")
    @TableField(value = "mlxz")
    private String mlxz;

    @Schema(name = "mlph", title = "户口所在地门楼牌号:mlxz和mlph只有其中一个")
    @TableField(value = "mlph")
    private String mlph;

    @Schema(name = "address", title = "户口所在完整地址")
    @TableField(value = "address")
    private String address;

    @Schema(name = "addressId", title = "关联地址id")
    @TableField(value = "address_id")
    private String addressId;

    @Schema(name = "householdPlace", title = "户籍所在地")
    @TableField(value = "household_place")
    private String householdPlace;

    @Schema(name = "street", title = "所属街道")
    @TableField(value = "street")
    private String street;

    @Schema(name = "maritalStatus", title = "婚姻状况")
    @TableField(value = "marital_status")
    private String maritalStatus;

    @Schema(name = "culturalLevel", title = "文化程度")
    @TableField(value = "cultural_level")
    private String culturalLevel;

    @Schema(name = "religion", title = "宗教信仰")
    @TableField(value = "religion")
    private String religion;

    @Schema(name = "bloodType", title = "血型")
    @TableField(value = "blood_type")
    private String bloodType;

    @Schema(name = "veteranTatus", title = "兵役状况")
    @TableField(value = "veteran_tatus")
    private String veteranTatus;

    @Schema(name = "householderIdcard", title = "户主身份证")
    @TableField(value = "householder_idcard")
    private String householderIdcard;

    @Schema(name = "householder", title = "户主姓名")
    @TableField(value = "householder")
    private String householder;

    @Schema(name = "accountType", title = "户口类型")
    @TableField(value = "account_type")
    private String accountType;

    @Schema(name = "relation", title = "与户主关系")
    @TableField(value = "relation")
    private String relation;

    @Schema(name = "pcs", title = "户口登记公安机关编码")
    @TableField(value = "pcs")
    private String pcs;

    @Schema(name = "registrationDate", title = "登记日期")
    @TableField(value = "registration_date")
    private Date registrationDate;

    @Schema(name = "registrationAuthority", title = "登记机关")
    @TableField(value = "registration_authority")
    private String registrationAuthority;

    @Schema(name = "qfjg", title = "签发机关")
    @TableField(value = "qfjg")
    private String qfjg;

    @Schema(name = "hssqlbz", title = "何省市迁来本址")
    @TableField(value = "hssqlbz")
    private String hssqlbz;

    @Schema(name = "hssqxqlws", title = "何县区来本市")
    @TableField(value = "hssqxqlws")
    private String hssqxqlws;

    @Schema(name = "hxzlbd", title = "何详址来本址")
    @TableField(value = "hxzlbd")
    private String hxzlbd;

    @Schema(name = "hsqlbs", title = "何时迁来本市")
    @TableField(value = "hsqlbs")
    private String hsqlbs;

    @Schema(name = "hsqlbz", title = "何时迁来本址")
    @TableField(value = "hsqlbz")
    private String hsqlbz;

    @Schema(name = "cityOtherAddress", title = "本市(县)其他地址")
    @TableField(value = "city_other_address")
    private String cityOtherAddress;

    @Schema(name = "serviceSpaces", title = "服务处所")
    @TableField(value = "service_spaces")
    private String serviceSpaces;

    @Schema(name = "number", title = "编号")
    @TableField(value = "number")
    private String number;

    @Schema(name = "tongTime", title = "数据归集日期")
    @TableField(value = "tong_time")
    private Date tongTime;

    @Schema(name = "primarySchoolOne", title = "可就读小学顺位1")
    @TableField(value = "primary_school_one")
    private String primarySchoolOne;

    @Schema(name = "primarySchoolTwo", title = "可就读小学顺位2")
    @TableField(value = "primary_school_two")
    private String primarySchoolTwo;

    @Schema(name = "primarySchoolThree", title = "可就读小学顺位3")
    @TableField(value = "primary_school_three")
    private String primarySchoolThree;

    @Schema(name = "primarySchoolFour", title = "可就读小学顺位4")
    @TableField(value = "primary_school_four")
    private String primarySchoolFour;

    @Schema(name = "juniorSchoolOne", title = "可就读初中顺位1")
    @TableField(value = "junior_school_one")
    private String juniorSchoolOne;

    @Schema(name = "juniorSchoolTwo", title = "可就读初中顺位2")
    @TableField(value = "junior_school_two")
    private String juniorSchoolTwo;

    @Schema(name = "juniorSchoolThree", title = "可就读初中顺位3")
    @TableField(value = "junior_school_three")
    private String juniorSchoolThree;

    @Schema(name = "juniorSchoolFour", title = "可就读初中顺位4")
    @TableField(value = "junior_school_four")
    private String juniorSchoolFour;

    @Schema(name = "qysj", title = "启用时间")
    @TableField(value = "qysj")
    private String qysj;

    @Schema(name = "xxqysj", title = "迁移时间")
    @TableField(value = "xxqysj")
    private String xxqysj;

    @Schema(name = "yxqxqsrq", title = "有效期起始日期")
    @TableField(value = "yxqxqsrq")
    private String yxqxqsrq;

    @Schema(name = "yxqxjzrq", title = "有效期截止日期")
    @TableField(value = "yxqxjzrq")
    private String yxqxjzrq;

    @Schema(name = "jlbz", title = "记录标志")
    @TableField(value = "jlbz")
    private String jlbz;

    @Schema(name = "year", title = "年份")
    @TableField(value = "year")
    private String year;

    @Schema(name = "areaCode", title = "行政区划")
    @TableField(value = "area_code")
    private String areaCode;

    @Schema(name = "authStatus", title = "审核状态")
    @TableField(value = "auth_status")
    private String authStatus;

    @Schema(name = "status", title = "是否启用0.禁用1.启用")
    @TableField(value = "status")
    private String status;

    @Schema(name = "del", title = "0,未删除,1,已删除")
    @TableField(value = "del", fill = FieldFill.INSERT, updateStrategy = FieldStrategy.NOT_NULL)
    @TableLogic
    private String del;

    @Schema(name = "createName", title = "创建人")
    @TableField(value = "create_name", fill = FieldFill.INSERT, updateStrategy = FieldStrategy.NOT_NULL)
    private String createName;

    @Schema(name = "createTime", title = "创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT, updateStrategy = FieldStrategy.NOT_NULL)
    private Date createTime;

    @Schema(name = "updateName", title = "修改人")
    @TableField(value = "update_name", fill = FieldFill.INSERT_UPDATE, updateStrategy = FieldStrategy.NOT_NULL)
    private String updateName;

    @Schema(name = "updateTime", title = "更新时间")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE, updateStrategy = FieldStrategy.NOT_NULL)
    private Date updateTime;

    @Schema(name = "materials", title = "佐证材料")
    @TableField(value = "materials")
    private String materials;

    @Override
    public Serializable pkVal() {
        return this.householdId;
    }
}
